package org.example.erat.strategy;

import org.example.erat.entity.ClassEntity;
import org.example.erat.entity.Course;
import org.example.erat.entity.Experiment;
import org.example.erat.entity.Student;

import java.util.List;
import java.util.Map;

/**
 * 统计策略接口
 * 用于实现不同的统计策略
 */
public interface StatisticsStrategy {
    
    /**
     * 执行统计
     * @param classEntity 班级
     * @param course 课程
     * @param students 学生列表
     * @param experiments 实验列表
     * @param reportData 报告数据
     * @return 统计结果
     */
    Map<String, Object> execute(ClassEntity classEntity, Course course, 
                               List<Student> students, List<Experiment> experiments, 
                               Map<String, Object> reportData);
    
    /**
     * 获取策略名称
     * @return 策略名称
     */
    String getName();
}
